package org.example.day01;

import java.util.Scanner;

/**
 * @author zlxad
 * @version 1.0
 * @description: TODO +
 * 给定一个字符串，只包含字母和数字，按要求找出字符串中的最长（连续）子串的长度，字符串本身是其最长的子串，子串要求：
 * 1、 只包含1个字母(a~z, A~Z)，其余必须是数字；
 * 2、 字母可以在子串中的任意位置；
 * <p>
 * 如果找不到满足要求的子串，如全是字母或全是数字，则返回-1
 * @date 2024/3/11 15:22
 */
public class test004 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个字符串：");
        String s = scanner.nextLine();
        int result = findLongestSubstring(s);
        System.out.println("最长子串的长度为：" + result);
    }

    public static int findLongestSubstring(String s) {
        int maxLength = 0;

        for (int i = 0; i < s.length(); i++) {
            if (Character.isLetter(s.charAt(i))) { // 判断当前字符是否是字母
                int length = 1;
                int j = i - 1;
                while (j >= 0 && Character.isDigit(s.charAt(j))) { // 向前遍历，直到找到一个数字字符或到达字符串开头
                    length++;
                    j--;
                }
                j = i + 1;
                while (j < s.length() && Character.isDigit(s.charAt(j))) { // 向后遍历，直到找到一个数字字符或到达字符串结尾
                    length++;
                    j++;
                }
                maxLength = Math.max(maxLength, length); // 更新最长子串的长度
            }
        }

        if (maxLength > 1) {
            return maxLength;
        } else {
            return -1;
        }
    }
}

